iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
Software Development

東漂見習生教你 C 語言系列 第 6

【DAY 06】: if、else

  • 分享至 

  • xImage
  •  

ㄎㄧㄤ ㄎㄧㄤ ㄎㄧㄤ! 今天來教各位的是...英文課 !
if 中文意思 : 如果;else 中文意思 : 其他,別的,否則。
結束,下課 !
修但幾勒 開玩笑,現在才正要開始 !

語法

if(<condition 1>){
    <statement>
}

else if(<condition 2>) {
    <statement>
}

else {
    <statement>
}

判斷式 Condition

觸發 ifelse 的關鍵就是判斷式,判斷式的結果只有對 (True) 或錯 (False)
建構判斷式的方式,就和數學中的不等式一樣,可以用 ==!=><>=<= 來實現。
比較特別的是相等的符號是兩個等號 == ! 為了要區別賦值的符號 =
另外比較特殊的還有 != 是不等於的意思 !

通常判斷式還會再搭配 && (and)、|| (or)、! (not)
要注意的是 這三個符號是邏輯運算子,有別於上一篇提到的位元運算子 ~

流程

下面是 ifelse 的流程圖:

一組 if、else 有以下的規定要特別留意

  1. 必須要有 if,但是 elseelse if 可根據情況不使用。
  2. else if 可以有多組,但 else 最多只有一組!
  3. 一組 ifelse 只有一個程式區塊會被執行,如果先進 if (代表 if 判斷為成立) 就不會進其他的條件判斷 (else ifelse)

那直接舉例給大家看!

題目 : 假設我們有一個等第關係如下,需要設計一個程式來判斷分數對應的等第。

A B C D E
>= 90 89 ~ 80 79 ~ 70 69 ~ 60 <= 59
#include <stdio.h>
int main(){
    int score;
    scanf("%d",&score);
    if(score >= 90)
        printf("This score %d is A!\n",score);
    else if(score >= 80)
        printf("This score %d is B!\n",score);
    else if(score >= 70)
        printf("This score %d is C!\n",score);
    else if(score >= 60)
        printf("This score %d is D!\n",score);
    else
        printf("This score %d is E!\n",score);
}

補充 :

  1. 像是介在 89 ~ 80 這個區間,就可以表示成 else if(score >= 80) 因為它沒進去第一個 if 代表輸進來的分數已經是 < 90 了 !
  2. 如果將 else if 改成 if 會發生甚麼事 ? 因為一組 ifelse 只有一個程式區塊會被執行。假設分數是 100 這樣的話,它就符合了前面四項,等於 100 的等第是 A、B、C、D,那就不合理了 !
  3. 89 ~ 80 這個區間,可以表示成 89 >= score >= 80 嗎 ? 大錯特錯 ! 這是一個很致命的錯誤 ! 假設現在的分數是 85,那程式會先判斷 89 >= 85 結果為 True (所以是 1),接著 1 >= 80 嗎 ? 不,所以 85分在這個判斷會是 False !

額外的小分享 : 大家在忙碌之餘,也要好好運動喔! Aqyu 今天可是打了將近四個小時的排球呢 (也可能只有剛開學,才有這樣的時間可以玩...) 總之有個健康的身體才能繼續生活啊 !


上一篇
【DAY 05】: 數字運算&位元運算
下一篇
【DAY 07】: while
系列文
東漂見習生教你 C 語言7
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言